1. Field of the Invention
The invention relates to intelligent or programmable host adapter devices used in computing systems for interfacing to peripheral devices. In particular, the present invention relates to methods and associated structures for downloading and uploading programmed instructions to such an intelligent host adapter device devoid of dedicated nonvolatile program memory.
2. Discussion of Related Art
Present computing systems are typically structured with a motherboard on which a variety of system components are mounted and one or more host adapter devices for interfacing the motherboard to peripheral devices such as I/O peripheral devices. The host adapter device provide electronic circuits and logic to adapt signals on the motherboard bus to signals appropriate for a particular peripheral device. For example, a host adapter device may adapt signals on a motherboard PCI bus for exchange with I/O peripheral devices attached to a SCSI bus.
In the past, host adapter devices lacked “intelligence”—in other words, they were not in general programmable devices. Operation of the device depended upon programmed instructions operable within the general-purpose processor (CPU) of the motherboard. When the motherboard was initialized (booted), programmed instructions operating in the CPU would initialize the host adapter devices coupled to the motherboard. Ongoing operation of the host adapter devices also depended upon programmed instructions operable within the general-purpose CPU of the motherboard (i.e., device driver software provided all operational control of the host adapter devices).
As computing technology has evolved, host adapter devices have evolved into programmable devices that operate in accordance with their own programmed instructions independent of instructions operable within the general-purpose CPU of an associated motherboard. In other words, in addition to initializing programmed instructions for operation of the general-purpose CPU of the motherboard, initial program instructions (i.e., boot code) must be provided to any associated, intelligent, programmable host adapter devices.
The general-purpose CPU of the motherboard is in general initialized through programmed instructions stored in nonvolatile memory of the motherboard and usually referred to by the acronym BIOS. A nonvolatile memory device such a ROM, PROM, EPROM, EEPROM or Flash Memory typically stores the initial program instructions (BIOS) for the motherboard operation at bootup. Heretofore, boot code for intelligent host adapter devices has been stored in an additional nonvolatile memory device associated with the host adapter device. Physically, this additional nonvolatile memory device was positioned in close proximity to the host adapter device. For example, where the host adapter device was mounted on the motherboard (integrated on the motherboard), the host adapter device's additional nonvolatile memory was also mounted on the motherboard. In the alternative, the additional nonvolatile memory device may be mounted on a separate host adapter board when the host adapter device is itself a separate printed circuit board distinct from the motherboard.
Addition of a nonvolatile memory device dedicated to use by an associated host adapter device adds cost and complexity to a system design. In other words, each host adapter device mounted on a motherboard design requires a nonvolatile memory device for storing its operational programmed instructions typically distinct from the BIOS nonvolatile memory of the motherboard. For a complex, feature-rich motherboard, a significant number of such nonvolatile memory devices may be required as optional host adapter devices are added to a motherboard design. Similarly, where a host adapter device is configured as an independent printed circuit board (i.e., a host adapter board), addition of a nonvolatile memory for storage of programmed instructions for each particular host adapter board adds cost and complexity to the design of that host adapter board.
It is evident from the above discussion that a need exists for methods and associated structure for initializing a host adapter device with operational programmed instructions without requiring the added complexity and associated cost of an additional nonvolatile memory device for each host adapter device. In particular, it is desirable to eliminate additional nonvolatile memory devices added to a motherboard design, each corresponding to an additional host adapter device mounted on the motherboard.